#ifndef _AVSTREAM_INTERFACE_H
#define _AVSTREAM_INTERFACE_H
#include <string>

#ifdef AVSTREAM_EXPORTS
#define DLL_AVSTREAM_API extern "C" __declspec(dllexport)
#else
#define DLL_AVSTREAM_API extern "C" __declspec(dllimport)
#endif

namespace av_stream_dev
{

  class IDataCallBack
  {
  public:
    virtual ~IDataCallBack() {}
    virtual void OnDataCallBack(uint8_t* data, int nWidth, int nHeight, int format) = 0;
  };

	class IAVStreamUtils
	{
	public:
		virtual ~IAVStreamUtils() {}
    virtual bool OpenInputFile(std::string path, int nWidth, int nHeight, int nFrameRate, bool bFile) = 0;
    virtual void StartCapture() = 0;
    virtual void StopCapture() = 0;


    virtual void SaveBmp(uint8_t* data, int nWidth, int nHeight, const char* fileName) = 0;

    virtual void SetDataCallBack(IDataCallBack*) = 0;
	};
	DLL_AVSTREAM_API IAVStreamUtils* CreateAVStreamUtilsObj();
	DLL_AVSTREAM_API void DelAVStreamUtilsObj(IAVStreamUtils**);
}




#endif